<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 作用域链本质上是底层的 变量查找机制
    // 作用域链查找的规则是什么：
    // -->会优先查找当前函数作用域中查找变量
    // -->查找不到则会依次 逐级查找父作用域 直到全局作用域

    // 全局作用域
    let a = 1
    let b = 2
    function f() {
      let a = 2
      // 局部作用域
      function g() {
        a = 3
        console.log(a)
      }
      g()  // 调用g
    }
    f()  // 调用f
    // g ——> f ——> global

    // 总结：
    // 1.嵌套关系的作用域串联起来形成了作用域链
    // 2.相同作用域链中按着从小到大的规则查找变量
    // 3.子作用域能够访问父作用域，父作用域无法访问子作用域
  </script>
</body>

</html>